import random

def generate_hex_bytes(num_bytes):
    # 生成指定数量的字节，并将其转换为16进制表示，不带单引号
    hex_bytes = [f"0x{random.randint(0, 255):02X}" for _ in range(num_bytes)]
    # 使用逗号分隔并将结果拼接成字符串
    hex_array_str = ', '.join(hex_bytes)
    return hex_array_str

def save_hex_array_to_file(filename, num_bytes):
    # 生成字节数组字符串
    hex_array = generate_hex_bytes(num_bytes)
    
    # 定义前缀和后缀
    prefix = '''
// 将仅用来填充exe的数据放到单独的cpp里,方便替换的更改大小
#ifdef _DEBUG
// 调试版本这里设置小点,方便功能测试
constexpr size_t _fake_data_size = 1 * 1024 * 1024;
#else
// 上线版本记得调整这里
constexpr size_t _fake_data_size = 356 * 1024 * 1024;
#endif

unsigned char _fake_data_unused[_fake_data_size] = {
#ifdef _DEBUG
0x00,0x01,0x02,0x03,0x04
#else
'''
    suffix = '''
#endif
    };

size_t fake_data_size = _fake_data_size;
unsigned char* fake_data_unused = _fake_data_unused;
'''
    # 构建最终的字符串
    final_str = prefix + hex_array + suffix
    
    # 将结果写入文件
    with open(filename, 'w') as file:
        file.write(final_str)

# 示例：生成指定字节的16进制数组并保存到文件
num_bytes = 200*1024
filename = "FakeData.cpp"
save_hex_array_to_file(filename, num_bytes)

print(f"Hex array saved to {filename}")
